/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package primaprova;

import java.net.MalformedURLException;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.Naming;
import java.rmi.RemoteException;

/**
 * Per ogni interfaccia remota definita (nel nostro semplice caso, una soltanto)
 * è necessario creare una classe sul server che contenga l’implementazione
 * dell’oggetto remoto vero e proprio. Tale classe deve:
 *
 * Derivare dalla classe java.rmi.server.UnicastRemoteObject Implementare tutti
 * i metodi definiti nell’interfaccia remota (ma questa è una regola sempre
 * valida in Java) Tutti i costruttori definiti nella classe devono “lanciare”
 * un’eccezione del tipo java.rmi.RemoteException. Si noti che se si decidesse
 * di utilizzare soltanto il costruttore di default, sarà comunque necessario
 * scriverne il codice per gestire proprio la throw dell’eccezione
 * RemoteException.
 *
 */


public class RMISquareRootServer extends UnicastRemoteObject implements ISquareRoot {

    public RMISquareRootServer() throws RemoteException {
    }

    public double calculateSquareRoot(double aNumber) {
        return Math.sqrt(aNumber);
    }

    public static void main(String[] args) {
        try {
            ISquareRoot server = new RMISquareRootServer();
            Naming.rebind("//localhost/RMISquareRoot", server);

        } catch (RemoteException e) {
            e.printStackTrace();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}